package com.zbbt.sportslottery.app;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONException;

import android.app.Application;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.text.TextUtils;
import android.util.DisplayMetrics;

import com.baidu.mapapi.SDKInitializer;
import com.google.gson.JsonObject;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.ImageDecoder;
import com.nostra13.universalimageloader.core.decode.ImageDecodingInfo;
import com.umeng.message.PushAgent;
import com.umeng.message.proguard.k.e;
import com.zbbt.sportslottery.bean.ColumnBean;
import com.zbbt.sportslottery.bean.NewsProgarm;
import com.zbbt.sportslottery.net.TypeGsonHttpHandler;
import com.zbbt.sportslottery.net.ZbHttpClient;
import com.zbbt.sportslottery.util.AppUtil;
import com.zbbt.sportslottery.util.LocationUtil;
import com.zbbt.sportslottery.util.LogUtil;
import com.zbbt.sportslottery.util.SharePreferUtil;

/**
 * 
 * @ClassName: App
 * @Description: 继承自百度推送的application
 * @author：LiZhimin
 * @date：2014-12-17 下午2:25:25
 * @version V1.0
 */
public class App extends Application {
	public static int cityNumber = 0;
//我就日了
	/**
	 * 城市定位是否发生变化
	 */
	public static boolean isChangeLocation = false;
	/**
	 * 城市名称
	 */
	public static String cityName;

	public static boolean isFirstAccess = true;

	public static boolean isLogin = false;// 是否登陆

	/**
	 * 是否点击了LotteryShopFragment（附近彩票店）
	 */
	public static boolean isLotteryShopFragment = false;
	/**
	 * 是否点击了ExchangeRecordFragment （体验券记录（店主功能：兑换记录））
	 */
	public static boolean isExchangeRecordFragment = false;
	/**
	 * 默认的上下文环境context
	 * 
	 */
	private static Context context;
	/**
	 * screen height
	 */
	public static int SCREEN_HEIGHT;

	/**
	 * screen width
	 */
	public static int SCREEN_WIDTH;
	/**
	 * screen density
	 */
	public static float SCREEN_DENSITY;

	/**
	 * 应用程序SD卡根目录
	 */
	public static String ROOT_PATH;

	/**
	 * 文件对象存储目录
	 */
	public static String OBJECT_CACHE_PATH;

	public static DisplayImageOptions option;

	// 用户栏目列表 { "热点", "竞彩", "专家", "技巧", "公告", "星站", "数字" };
	public final static List<ColumnBean> userChannelList = new ArrayList<ColumnBean>();
	// 最新用户栏目列表
	public final static List<NewsProgarm> newsList = new ArrayList<NewsProgarm>();
	/** 调整返回的RESULTCODE */
	public static int CHANNELRESULT = 1;

	/**
	 * 网络请求参数:手机品牌
	 */
	public static String PARAM_BRAND = "";
	/**
	 * 网络请求参数:网络状态
	 */
	public static String PARAM_NETWORK = "";
	/**
	 * 网络请求参数:系统版本
	 */
	public static String PARAM_SYSVER = "";
	/**
	 * 网络请求参数:App版本
	 */
	public static String PARAM_SOFTVER = "";
	/**
	 * 网络请求参数:平台(1、IOS 2、安卓)
	 */
	public static String PARAM_PLATFORM = "2";
	/**
	 * 网络请求参数:设备号
	 */
	public static String PARAM_DEVICEID = "";
	/**
	 * 网络请求参数:App区域
	 */
	public static String PARAM_APPID = "1";
	/**
	 * 网络请求参数:渠道号
	 */
	public static String PARAM_SID = "";
	/**
	 * 网络请求参数:标识体彩与福彩
	 */
	public static String PARAM_CATEGORY = "2";
	/**
	 * sdk版本 8——21
	 */
	public static int PARAM_SDK_VERSION = 0;
	/*
	 * 网络请求参数： 格式：体/福彩+appID 北京福彩 102：全国版 200：福建体彩201：
	 */
	public static String APP_NUMBER = "201";

	public String appid1;

	@SuppressWarnings({ "unused", "null" })
	@Override
	public void onCreate() {
		super.onCreate();
		context = this;
		SDKInitializer.initialize(context);// 百度地图定位
		doInbackground();
		// 程序启动的时候，拿省份，如果没有的话，默认给“福建省”
		String City = SharePreferUtil.getString(Constant.CITY_NAME, "福建省");

		try {
			LocationUtil.getProvince(context);
			String appidlocation = SharePreferUtil.getString(Constant.CITY_NAME_LOCATION, "");
			if (appidlocation != null || !appidlocation.equals("")) {
				appid1 = AppUtil.getAppid(appidlocation);
				LogUtil.printI("locationlll", "省份是---" + appidlocation);
				String CityDefial = SharePreferUtil.getString(Constant.CITY_DEFIAL_NAME, "");
				if (TextUtils.isEmpty(CityDefial)) {
					sendMpna(appid1, appid1);
				} else {
					sendMpna(appid1, App.PARAM_APPID);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			LogUtil.printE("App", "APP_定位失败");
		}

	}

	private void sendMpna(String appid1, String appid2) {
		JsonObject jsonObject = new JsonObject();
		jsonObject.addProperty("appId1", appid1);
		jsonObject.addProperty("appId2", appid2);
		ZbHttpClient.postNewApi(ServerConfig.API_MPAN, jsonObject, new TypeGsonHttpHandler<String>() {

			@Override
			public void onSuccess(String data) {
			}

			@Override
			public void onFailure(String errorCode, String errorMsg) {}
		});
	}

	private void doInbackground() {
		new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					initScreenSize(context);
					AppUtil.initAppFileDir(context);
					AppUtil.initCustomParam(context);
					AppUtil.getAndroidSDKVersion();
					initImagerLoader();
					initUmegMessage();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}).start();
	}

	private void initImagerLoader() {
		ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
				.threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory()
				.diskCacheFileNameGenerator(new Md5FileNameGenerator())
				.tasksProcessingOrder(QueueProcessingType.FIFO).writeDebugLogs().build();
		ImageLoader.getInstance().init(config);
		option = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true)
				.imageScaleType(ImageScaleType.EXACTLY).bitmapConfig(Bitmap.Config.ARGB_8888).build();
	}

	private void initUmegMessage() {
		PushAgent mPushAgent = PushAgent.getInstance(context);
		mPushAgent.enable();
	}

	/**
	 * 初始化屏幕高度
	 */
	private void initScreenSize(Context context) {
		DisplayMetrics dm = new DisplayMetrics();
		dm = context.getResources().getDisplayMetrics();
		SCREEN_WIDTH = dm.widthPixels;
		SCREEN_HEIGHT = dm.heightPixels;
		SCREEN_DENSITY = dm.density;
	}

	public static Context getAppContext() {
		return context;
	}
}
